package com.hd123.rumba.gwt.util.client.batchprocess;

/**
 * 批量处理结果报告
 * 
 * @author LiQi
 * 
 */
public class BProcReport {

  /** 总任务数 */
  private int total = 0;

  /** 成功任务数 */
  private int success = 0;

  /** 失败任务数 */
  private int failure = 0;

  /** 跳过任务数 */
  private int skipped = 0;

  /**
   * 重置报告数据，恢复到初始状态
   * 
   */
  public void reset() {
    total = 0;
    success = 0;
    failure = 0;
    skipped = 0;
  }

  /**
   * 总的任务数
   * 
   * @return
   */
  public int getTotal() {
    return total;
  }

  /**
   * 设置总任务数
   * 
   * @param total
   */
  public void setTotal(int total) {
    this.total = total;
  }

  /**
   * 报告任务成功
   * 
   * @param count
   *          成功的任务数
   */
  public void reportSuccess(int count) {
    success += count;
  }

  /**
   * 报告一个任务成功
   * 
   */
  public void reportSuccess() {
    reportSuccess(1);
  }

  /**
   * 成功任务数
   * 
   * @return
   */
  public int getSuccess() {
    return success;
  }

  /**
   * 设置成功任务数
   * 
   * @param success
   */
  public void setSuccess(int success) {
    this.success = success;
  }

  /**
   * 报告任务失败
   * 
   * @param count
   *          失败的任务数
   */
  public void reportFailure(int count) {
    failure += count;
  }

  /**
   * 报告一个任务失败
   * 
   */
  public void reportFailure() {
    reportFailure(1);
  }

  /**
   * 失败任务数
   * 
   * @return
   */
  public int getFailure() {
    return failure;
  }

  /**
   * 设置失败任务数
   * 
   * @param failure
   */
  public void setFailure(int failure) {
    this.failure = failure;
  }

  /**
   * 报告任务跳过
   * 
   * @param count
   *          跳过的任务数
   */
  public void reportSkipped(int count) {
    skipped += count;
  }

  /**
   * 报告一个任务跳过
   * 
   */
  public void reportSkipped() {
    reportSkipped(1);
  }

  /**
   * 跳过任务数
   * 
   * @return
   */
  public int getSkipped() {
    return skipped;
  }

  /**
   * 设置跳过任务数
   * 
   * @param skipped
   */
  public void setSkipped(int skipped) {
    this.skipped = skipped;
  }

  /**
   * 未处理任务数
   * 
   * @return
   */
  public int getNotProcessed() {
    return total - success - failure - skipped;
  }

  /**
   * HTML格式的报告内容
   * 
   * @return
   */
  public String getHTML() {
    if (getTotal() == getSuccess()) {
      return getTotal() + " 个全部处理成功！";
    } else {
      String s = "";
      s += "<table>";
      s += "<tr><td>共有</td><td width=40px align=right><b>" + getTotal()
          + "</b> 个</td><td>，其中：</td></tr>";
      s += "<tr><td>成功</td><td align=right><b><font color=green>" + getSuccess()
          + "</font></b> 个</td></tr>";

      if (getFailure() > 0)
        s += "<tr><td>失败</td><td align=right><b><font color=red>" + getFailure()
            + "</font></b> 个</td></tr>";

      if (getSkipped() > 0)
        s += "<tr><td>跳过</td><td align=right><b>" + getSkipped() + "</b> 个<br></td></tr>";

      if (getNotProcessed() > 0)
        s += "<tr><td>未处理</td><td align=right><b>" + getNotProcessed() + "</b> 个</td></tr>";

      s += "</table>";

      return s;
    }
  }
}
